package com.cty.servlet.servlet3;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.Enumeration;

/**
 * @Auther: cty
 * @Date: 2020/2/10 21:24
 * @Description: request对象学习
 * 一、作用：request对象中封存了当前请求的所有请求信息。
 * 	         request对象由tomcat服务器创建，并作为实参传递给处理请求的servlet的service方法。
 *
 * 二、使用：
 * 			获取请求头数据
 * 					req.getMethod();//获取请求方式
 * 					req.getRequestURL();//获取请求URL信息
 * 					req.getRequestURI();//获取请求URI信息
 * 					req.getScheme();//获取协议
 * 			获取请求行数据
 * 					req.getHeader("键名");//返回指定的请求头信息
 * 					req.getHeaderNames();//返回请求头的键名的枚举集合
 * 			获取用户数据
 * 					req.getParameter("键名");//返回指定的用户数据
 * 					req.getParameterValues("键名");//返回同键不同值的请求数据(多选)，返回的数组。
 * 					req.getParameterNames()//返回所有用户请求数据的枚举集合
 * 			注意：
 * 				如果要获取的请求数据不存在，不会报错，返回null。
 *
 * 三、请求中文乱码解决:
 * 	        1、使用String进行数据重新编码
 * 			    uname=new String(uname.getBytes("iso8859-1"),"utf-8");
 *          2、使用公共配置
 * 		        get方式：
 * 			        步骤一：req.setCharacterEncoding("utf-8");
 * 			        步骤二：
 * 				        在tomcat的目录下的conf目录中修改server.xml文件：在Connector标签中增加属性 useBodyEncodingForURI="true"
 * 		        post方式：
 * 			        req.setCharacterEncoding("utf-8");
 * @version: 1.0
 */
@WebServlet(name = "RequestServlet")
public class RequestServlet extends HttpServlet {
    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //设置请求编码格式
        req.setCharacterEncoding("utf-8");
        //获取请求头数据
        //获取请求方式
        String method = req.getMethod();
        System.out.println(method);
        System.out.println();
        //获取请求URL
        StringBuffer url=req.getRequestURL();
        System.out.println(url);
        System.out.println();
        //获取URI
        String uri=req.getRequestURI();
        System.out.println(uri);
        System.out.println();
        //获取协议
        String h=req.getScheme();
        System.out.println(h);
        System.out.println();
        //获取请求行数据
        //获取指定的请求行信息
        String value=req.getHeader("aaa");
        System.out.println(value);
        System.out.println();
        //获取所有的请求行的键的枚举
        Enumeration e = req.getHeaderNames();
        while(e.hasMoreElements()){
            String name=(String) e.nextElement();
            String value2=req.getHeader(name);
            System.out.println(name+":"+value2);
        }
        System.out.println();
        //获取用户数据
        String name=req.getParameter("uname");
        String pwd=req.getParameter("pwd");
        System.out.println(name+":"+pwd);
        System.out.println();
        //String fav=req.getParameter("fav");
        String[] favs=req.getParameterValues("fav");
        if(favs!=null){
            for(String fav:favs){
                System.out.println(fav);
            }
        }
        System.out.println();
        //获取所有的用户请求数据的键的枚举集合---req.getParameterNames()
    }
}

//res:
//GET
//
//http://localhost:8888/myservlet/req
//
///myservlet/req
//
//http
//
//null
//
//host:localhost:8888
//user-agent:Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:72.0) Gecko/20100101 Firefox/72.0
//accept:text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
//        accept-language:zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
//        accept-encoding:gzip, deflate
//        connection:keep-alive
//        referer:http://localhost:8888/myservlet/Method.jsp
//        cookie:JSESSIONID=378715F4B5DCD99040F0AF3F0D73972C; Idea-c0e65154=9d2226d0-e5b6-4bd3-bd1a-a1c2e6b90d31; hibext_instdsigdipv2=1
//        upgrade-insecure-requests:1
//
//        cty:123
//
//
//        GET
//
//        http://localhost:8888/myservlet/req
//
//        /myservlet/req
//
//        http
//
//        null
//
//        host:localhost:8888
//        user-agent:Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:72.0) Gecko/20100101 Firefox/72.0
//        accept:text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
//accept-language:zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
//accept-encoding:gzip, deflate
//connection:keep-alive
//referer:http://localhost:8888/myservlet/Method.jsp
//cookie:JSESSIONID=378715F4B5DCD99040F0AF3F0D73972C; Idea-c0e65154=9d2226d0-e5b6-4bd3-bd1a-a1c2e6b90d31; hibext_instdsigdipv2=1
//upgrade-insecure-requests:1
//
//cty:123
//
//1
//2
//3
